Caso ninguem crie, irei utilizar o seu topico para minha contribuição do dia mais tarde.
- Fórum
- xTibia - Notícias e Suporte
- Soluções
- Archived
- Low Skills Lock
info
Grupo: Campones
Registrado: 27/12/10
Posts: 45
Reputação: +4
Char no Tibia: Ocrux

Agradeço @Krono, mas defina "mais tarde"?EUTOIMPLORANDO!!!
(:
Meu caro, fique ciente que estou aprendendo script, então o meu code pode não dar certo, nesse caso eu tentarei corrigir ou mandar outro script para solucionar o seu problema.
Segue o script:
local skillplayer = {getPlayerSkillLevel(cid, skill_axe), getPlayerSkillLevel(cid, skill_club), getPlayerSkillLevel(cid, skill_sword), getPlayerSkillLevel(cid, skill_fist), getPlayerSkillLevel(cid, skill_distance), getPlayerSkillLevel(cid, skill_maglevel, getPlayerSkillLevel(cid, skill_shield)} --ordem é axe club sword fist distance magic shield
function onLogin(cid)
if skillplayer.vocation[1] < skillminimo.vocation[1] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[1] - skillplayer[1])
end
if skillplayer.vocation[2] < skillminimo.vocation[2] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[2] - skillplayer[2])
end
if skillplayer.vocation[3] < skillminimo.vocation[3] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[13] - skillplayer[3])
end
if skillplayer.vocation[4] < skillminimo.vocation[4] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[4] - skillplayer[4])
end
if skillplayer.vocation[5] < skillminimo.vocation[5] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[5] - skillplayer[5])
end
if skillplayer.vocation[6] < skillminimo.vocation[6] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[6] - skillplayer[6])
end
if skillplayer.vocation[7] < skillminimo.vocation[7] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation[7] - skillplayer[7])
end
Espero que de certo, aguardo seu comentario
~~ att krono
Corrigido por fireelement.
Editado Abril 17 por Krono
info
Grupo: Conde
Registrado: 16/06/08
Posts: 998
Reputação: +185
Gênero: Masculino

Meu caro, fique ciente que estou aprendendo script, então o meu code pode não dar certo, nesse caso eu tentarei corrigir ou mandar outro script para solucionar o seu problema.
Segue o script:
local vocation = getPlayerVocation(cid)-- vocation local skillminimo = { [1, 5] = {axe = 10, club = 10, sword = 10, fist = 10, distance = 10, magic = 10, shield = 10}, --sorcerer [2, 6] = {axe = 10, club = 10, sword = 10, fist = 10, distance = 10, magic = 10, shield = 10}, --druid [3, 7] = {axe = 10, club = 10, sword = 10, fist = 10, distance = 10, magic = 10, shield = 10}, -- paladin [4, 8] = {axe = 10, club = 10, sword = 10, fist = 10, distance = 10, magic = 10, shield = 10}} -- sorcerer local skillplayer = {getplayerskilllevel(cid, skill_axe), getplayerskilllevel(cid, skill_club), getplayerskilllevel(cid, skill_sword), getplayerskilllevel(cid, skill_fist), getplayerskilllevel(cid, skill_distance), getplayerskilllevel(cid, skill_maglevel, getplayerskilllevel(cid, skill_shield)} --ordem é axe club sword fist distance magic shield function onLogin(cid) if skillplayer.vocation[1] < skillminimo.vocation[1] doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[1] - skillplayer[1]) end if skillplayer.vocation[2] < skillminimo.vocation[2] doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[2] - skillplayer[2]) end if skillplayer.vocation[3] < skillminimo.vocation[3] doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[13] - skillplayer[3]) end if skillplayer.vocation[4] < skillminimo.vocation[4] doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[4] - skillplayer[4]) end if skillplayer.vocation[5] < skillminimo.vocation[5] doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[5] - skillplayer[5]) end if skillplayer.vocation[6] < skillminimo.vocation[6] doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[6] - skillplayer[6]) end if skillplayer.vocation[7] < skillminimo.vocation[7] doPlayerAddSkill(cid, skill_axe, skillminimo.vocation[7] - skillplayer[7]) end
Espero que de certo, aguardo seu comentario
~~ att krono
Tu pode fazer assim pra diminuir:
for i = 1, 7 do
if skillplayer.vocation[i] < skillminimo.vocation[i] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[i] - skillplayer[i])
end
end
E "getplayerskilllevel" tem que ser "getPlayerSkillLevel".
Faltou um "then" nos "if" também.
Acho que "[1, 5]" não vai funcionar, tem que ser só um valor ([1]).
Editado Abril 17 por fireelement
Erros de principiante.
Um script diminuido segundo a explicação que intendi do fireelement.
local skillplayer = {getPlayerSkillLevel(cid, skill_axe), getPlayerSkillLevel(cid, skill_club), getPlayerSkillLevel(cid, skill_sword), getPlayerSkillLevel(cid, skill_fist), getPlayerSkillLevel(cid, skill_distance), getPlayerSkillLevel(cid, skill_maglevel, getPlayerSkillLevel(cid, skill_shield)} --ordem é axe club sword fist distance magic shield
function onLogin(cid)
for i = 1, 7 do
if skillplayer.vocation[i] < skillminimo.vocation[i] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[i] - skillplayer[i])
end
end
Obrigado pela ajuda ficou muito melhor.
:
Recomendaria colocar a tabela skillplayer dentro do callback. Como cid está sendo declarado no onUse, seu valor fora dele será nulo.
Ah, também faltou no final um return true end.
Editado Abril 17 por zipter98
info
Grupo: Campones
Registrado: 27/12/10
Posts: 45
Reputação: +4
Char no Tibia: Ocrux

[17/04/2015 21:19:58] [Error - LuaScriptInterface::loadFile] data/creaturescripts/scripts/skillslock.lua:3: ']' expected near ','
Tenta assim:
local config = {
skills = {SKILL_FIST, SKILL_CLUB, SKILL_SWORD, SKILL_AXE, SKILL_DISTANCE, SKILL_SHIELD, SKILL__MAGLEVEL},
minSkill = {
--[vocation_ID] = {fist, club, sword, axe, distance, shield, magic}, --NÃO altere a ordem.
[1] = {20, 1, 10, 5, 10, 15, 10},
[2] = {10, 15, 10, 20, 10, 5, 20},
},
}
function onLogin(cid)
local voc = getPlayerVocation(cid)
if config.minSkill[voc] then
for _, skillId in pairs(config.skills) do
if getPlayerSkillLevel(cid, skillId) < config.minSkill[voc][_] then
doPlayerAddSkill(cid, skillId, config.minSkill[voc][_] - getPlayerSkillLevel(cid, skillId))
end
end
end
return true
end
info
Grupo: Campones
Registrado: 27/12/10
Posts: 45
Reputação: +4
Char no Tibia: Ocrux

[17/04/2015 22:00:20] Druidzeraah has logged in.
info
Grupo: Conde
Registrado: 03/01/12
Posts: 884
Reputação: +233
Char no Tibia: Segredo

testa assim acho que faltou só as "aspas"
local config = {
skills = {"SKILL_FIST", "SKILL_CLUB", "SKILL_SWORD", "SKILL_AXE", "SKILL_DISTANCE", "SKILL_SHIELD", "SKILL__MAGLEVEL"},
minSkill = {
--[vocation_ID] = {fist, club, sword, axe, distance, shield, magic}, --NÃO altere a ordem.
[1] = {20, 1, 10, 5, 10, 15, 10},
[2] = {10, 15, 10, 20, 10, 5, 20},
},
}
function onLogin(cid)
local voc = getPlayerVocation(cid)
if config.minSkill[voc] then
for _, skillId in pairs(config.skills) do
if getPlayerSkillLevel(cid, skillId) < config.minSkill[voc][_] then
doPlayerAddSkill(cid, skillId, config.minSkill[voc][_] - getPlayerSkillLevel(cid, skillId))
end
end
end
return true
end
Editado Maio 13 por notle2012






info
Grupo: Campones
Registrado: 27/12/10
Posts: 45
Reputação: +4
Char no Tibia: Ocrux
Tipo do script: Creature Scripts
Protocolo (versão do Tibia): 8.60
Servidor utilizado: TheForgottenServerV8.2 32bit
Nível de experiência: Fácil
Adicionais/Informações: É exatamente igual o LowLevelLock, que não deixa você baixar do level 130; quero isso só que pra cada skills e configuravél por vocações; exemplo - Druid X de ML, kina X de Axe/Shield e por ai vai... Não acho que seja dificil, mas pra mim é.